ヒント:
課題に必要なコードだけで構成されていることを確認してください.
※関数の呼び出しがどのパッケージで行なわれているかを分かりやすくするため, パッケージ名::関数名という形でコーディングしてあります.通常はパッケージ名::の部分は省略して構いません(複数パッケージで関数名が重複する場合は必要です).
#1.環境設定
#ggplot2パッケージはグラフ描画に必要です
if(!require(ggplot2)){
install.packages("ggplot2")
library(ggplot2)
}
# mapsパッケージは世界地図の描画に必要です
if(!require(maps)){
install.packages("maps")
library(maps)
}
# maptoolsパッケージはshapeファイルの読み込みに必要です
if(!require(maptools)){
install.packages("maptools")
library(maptools)
}
# broomパッケージはSpatialLinesDataFrameをdata.frameに変換するのに必要です
if(!require(broom)){
install.packages("broom")
library(broom)
}
#フォントファミリを設定する.(游ゴシック体)
if(.Platform$OS.type=="windows")
# Windowsの場合
windowsFonts(yugo=windowsFont("Yu Gothic"))
if(capabilities("aqua"))
# MacOSの場合
quartzFonts(yugo=quartzFont(rep("YuGo-Medium",4)))
#2.データの読み込み
#プレート境界線データの読み込み
# 発散型境界shapeファイルの読み込み
ridge <-maptools::readShapeSpatial("plate/ridge.shp")
# ggplot2での描画のためSpatialLinesDataFrameをdata.frameに変換する
ridge.fort<-broom::tidy(ridge)
# トランスフォーム型境界shapeファイルの読み込み
transform <-maptools::readShapeSpatial("plate/transform.shp")
# ggplot2での描画のためSpatialLinesDataFrameをdata.frameに変換する
transform.fort<-broom::tidy(transform)
# 収束型境界shapeファイルの読み込み
trench <-maptools::readShapeSpatial("plate/trench.shp")
# ggplot2での描画のためSpatialLinesDataFrameをdata.frameに変換する
trench.fort<-broom::tidy(trench)
#火山データの読み込み
volc <- read.csv("GVP_Volcano_List.csv",header =TRUE,skip = 1,stringsAsFactors = FALSE)
#地震データの読み込み
quake<-read.csv("20110311JSTquery.csv",header = TRUE,stringsAsFactors = FALSE)
#3.描画
# ggplotオブジェクトを初期化する
g<-ggplot2::ggplot()
#プレート境界の描画
#発散型境界を描画する
g <- g + ggplot2::geom_path(data= ridge.fort, mapping = aes(x=long, y=lat, group=group),color="red")
#トランスフォーム型境界を描画する
g <- g + ggplot2::geom_path(data= transform.fort, aes(x=long, y=lat, group=group),color="red")
#収束型境界を描画する
g <- g + ggplot2::geom_path(data= trench.fort, aes(x=long, y=lat, group=group),color="red")
#火山の描画
g<-g+ggplot2::geom_point(data=volc,mapping = aes(x=Longitude,y=Latitude),shape=2,color="#000000")
#世界地図の描画
g<-g+ggplot2::borders(database = "world")
#地震の描画
g<-g+ggplot2::geom_point(data = quake,mapping = aes(x=longitude,y=latitude,color=depth,size=mag))
#使用するフォントファミリを設定する
g<-g+ggplot2::theme_bw(base_family = "yugo")
# 軸ラベルを描画する
g<-g+ggplot2::ylab("緯度")+ggplot2::xlab("経度")
#色の範囲を設定する.地震の発生深度が浅ければ赤,深ければ黄色とする.
g<-g+ggplot2::scale_color_continuous(low=rgb(1,0,0),high=rgb(1,1,0))
#点のサイズを0から6の範囲とする
g<-g+ggplot2::scale_size_continuous(range=c(0,6))
# タイトルを描画する
g <- g +ggplot2::ggtitle("プレート境界と地震と火山データ")
# ggplotオブジェクトを画面に描画する
g#画像を保存する
ggsave("ex01.png",plot = g)ヒント:
課題に必要なコードだけで構成されていることを確認してください.
※関数の呼び出しがどのパッケージで行なわれているかを分かりやすくするため, パッケージ名::関数名という形でコーディングしてあります.通常はパッケージ名::の部分は省略して構いません(複数パッケージで関数名が重複する場合は必要です).
#1.環境設定
#ggplot2パッケージはグラフ描画に必要です
if(!require(ggplot2)){
install.packages("ggplot2")
library(ggplot2)
}
# mapsパッケージは世界地図の描画に必要です
if(!require(maps)){
install.packages("maps")
library(maps)
}
# maptoolsパッケージはshapeファイルの読み込みに必要です
if(!require(maptools)){
install.packages("maptools")
library(maptools)
}
# broomパッケージはSpatialLinesDataFrameをdata.frameに変換するのに必要です
if(!require(broom)){
install.packages("broom")
library(broom)
}
#フォントファミリを設定する.(游ゴシック体)
if(.Platform$OS.type=="windows")
# Windowsの場合
windowsFonts(yugo=windowsFont("Yu Gothic"))
if(capabilities("aqua"))
# MacOSの場合
quartzFonts(yugo=quartzFont(rep("YuGo-Medium",4)))
#2.データの読み込み
#プレート境界線データの読み込み
# 発散型境界shapeファイルの読み込み
ridge <-maptools::readShapeSpatial("plate/ridge.shp")
# ggplot2での描画のためSpatialLinesDataFrameをdata.frameに変換する
ridge.fort<-broom::tidy(ridge)
# トランスフォーム型境界shapeファイルの読み込み
transform <-maptools::readShapeSpatial("plate/transform.shp")
# ggplot2での描画のためSpatialLinesDataFrameをdata.frameに変換する
transform.fort<-broom::tidy(transform)
# 収束型境界shapeファイルの読み込み
trench <-maptools::readShapeSpatial("plate/trench.shp")
# ggplot2での描画のためSpatialLinesDataFrameをdata.frameに変換する
trench.fort<-broom::tidy(trench)
#火山データの読み込み
volc <- read.csv("GVP_Volcano_List.csv",header =TRUE,skip = 1,stringsAsFactors = FALSE)
#地震データの読み込み
quake<-read.csv("20110311JSTquery.csv",header = TRUE,stringsAsFactors = FALSE)
#3.データ加工
#日本地図を取得する
jp<-ggplot2::borders(database = "world",regions = "japan")
# 取得した日本地図の経度値の最大を取得する
max_x <- max(jp$data$long)
# 取得した日本地図の緯度値の最大を取得する
max_y <- max(jp$data$lat)
# 取得した日本地図の経度値の最小を取得する
min_x <- min(jp$data$long)
# 取得した日本地図の緯度値の最大を取得する
min_y <- min(jp$data$lat)
#地震データを日本地図の範囲内で発生したものに限定する
quake2<-subset(quake,(quake$longitude < max_x & quake$longitude > min_x)&(quake$latitude < max_y & quake$latitude > min_y))
#プレート境界線を日本地図の範囲内のものに限定する
ridge.fort2 <- subset(ridge.fort,(ridge.fort$long < max_x & ridge.fort$long > min_x)&(ridge.fort$lat < max_y & ridge.fort$lat > min_y))
transform.fort2 <- subset(transform.fort,(transform.fort$long < max_x & transform.fort$long > min_x)&(transform.fort$lat < max_y & transform.fort$lat > min_y))
trench.fort2 <- subset(trench.fort,(trench.fort$long < max_x & trench.fort$long > min_x)&(trench.fort$lat < max_y & trench.fort$lat > min_y))
#火山データを日本地図の範囲内のものに限定する
volc2 <- subset(volc,(volc$Longitude < max_x & volc$Longitude > min_x)&(volc$Latitude < max_y & volc$Latitude > min_y))
#4.描画
# ggplotオブジェクトを初期化する
g<-ggplot2::ggplot()
#プレート境界の描画
#発散型境界を描画する
g <- g + ggplot2::geom_path(data= ridge.fort2, mapping = aes(x=long, y=lat, group=group),color="red")
#トランスフォーム型境界を描画する
g <- g + ggplot2::geom_path(data= transform.fort2, aes(x=long, y=lat, group=group),color="red")
#収束型境界を描画する
g <- g + ggplot2::geom_path(data= trench.fort2, aes(x=long, y=lat, group=group),color="red")
#火山の描画
g<-g+ggplot2::geom_point(data=volc2,mapping = aes(x=Longitude,y=Latitude),shape=2,color="#000000")
#日本地図の描画
g<-g+jp
#地震の描画
g<-g+ggplot2::geom_point(data = quake2,mapping = aes(x=longitude,y=latitude,color=depth,size=mag))
#使用するフォントファミリを設定する
g<-g+ggplot2::theme_bw(base_family = "yugo")
# 軸ラベルを描画する
g<-g+ggplot2::ylab("緯度")+ggplot2::xlab("経度")
#色の範囲を設定する.地震の発生深度が浅ければ赤,深ければ黄色とする.
g<-g+ggplot2::scale_color_continuous(low=rgb(1,0,0),high=rgb(1,1,0))
#点のサイズを0から6の範囲とする
g<-g+ggplot2::scale_size_continuous(range=c(0,6))
# タイトルを描画する
g <- g +ggplot2::ggtitle("プレート境界と地震と火山データ")
# ggplotオブジェクトを画面に描画する
g#画像を保存する
ggsave("ex02.png",plot = g)前回は簡素な地図に観測データを描画しました.国単位での描画は可能でしたが, 柔軟性には欠けていました.
本日は ggmap というライブラリを使って Google Map を用いた可視化を試みます.
ggmap パッケージを用いると R で Google Map にプロットすることができるようになります.
それでは早速 Google Map を描画してみましょう.
#ライブラリを読み込む
if(!require(ggmap)){
install.packages("ggmap")
library(ggmap)
}
# 経度,緯度を指定する.
loc<- c(lon=139.4451841,lat=35.6944078)
# google map を取得する
map <- ggmap::get_map(location = loc)
# google map を描画する
ggmap::ggmap(map)上記では(経度:139.4451841,緯度:35.6944078)を中心としたGoogleMapを描画しています.
下記のようなエラーが表示される場合は ggmap を再インストールすると修正されるかもしれません.
> ggmap(map)
layer(mapping = NULL, data = NULL, stat = "identity", geom = <environment>, でエラー:
使われていない引数 (geom_params = list(raster = c("#898C84", "#7D817D", "#818581", "#858981", "#8D9189", "#A6AAA2", "#B7BDB3", "#AFB3A7", "#B7BDB3", …
地図画像を取得するには get_map 関数を用います.引数を変更すれば地図の種類を変更することができます.
先程のコードを以下のように変更してください.変更箇所は get_map 関数の「maptype=“terrain”」とある場所だけです.
#ライブラリを読み込む
if(!require(ggmap)){
install.packages("ggmap")
library(ggmap)
}
# 経度,緯度を指定する.
loc<- c(lon=139.4451841,lat=35.6944078)
# ここを変更する.地形図を表示する
map <- ggmap::get_map(location = loc,maptype="terrain")
# google map を描画する
ggmap::ggmap(map)同じようにmaptypeを変更するとGoogleMapの地図種類を変更できます.
「maptype=“satellite”」で航空写真としてプロットします.
#航空写真 (Google Map)
map <- ggmap::get_map(location = loc,maptype="satellite")
ggmap::ggmap(map)「maptype=“roadmap”」で道路地図としてプロットする.
#道路地図 (Google Map)
map <- ggmap::get_map(location = loc,maptype="roadmap")
ggmap::ggmap(map)「航空写真+道路地図」としてプロットします.
#航空写真+道路地図 (Google Map)
map <- ggmap::get_map(location = loc,maptype="hybrid")
ggmap::ggmap(map)「zoom=16」でズームレベルを「16」に変更します.
#ズームレベル16(ズームレベル1,2は使いものにならない)
map <- ggmap::get_map(location = loc,maptype="hybrid",zoom=16)
ggmap::ggmap(map)